EasyRSA-Advanced v3.08 中文译本

Next:   [Contents]

EasyRSA-Advanced v3.08 中文译本

Table of Contents


1 译者总注

李守中是开源软件理念坚定的支持者,所以译本虽不是软件,但依旧仿照开源软件的协议发布:

如果读者发现作品中有错误的地方,劳请来信指出。任何提高作品质量的建议李守中都将虚心接纳。

更多文章可于 李守中的主页 在线浏览。

原文档来源:

李守中在翻译 EasyRSA v3 系列文档的过程中发现,很多句子对于程序行为的描述有些模糊。

所以,李守中将不加提示地根据软件行为意译原文档中多数的句子;对于意译困难的句子,李守中会加入以 译者注 为开始标记的文本来帮助读者理解;对于意译之后依旧无法准确描述目标行为的句子,李守中将不加提示地扩充文档的内容。

有能力的读者可以从此链接 easyrsa_v3.08_doc.zip 下载英文原文与本文做对照。


2 (原文档开头部分)

这是一个为熟悉 PKI 流程的高级用户编写的技术参考文档。如果需要更详细的说明,请参阅 EasyRSA-Readme v3.08 中文译本EasyRSA Intro-To-PKI v3.08 中文译本 文档。


3 配置参考 ( Configuration Reference )


3.1 配置源 ( Configuration Sources)

有 3 种方法可以配置 Easy-RSA 的行为,配置的优先级按以下列表排序 ( 低优先级的配置不会覆盖高优先级的配置 ):

  1. 命令行选项。
  2. 环境变量。
  3. 名为 vars 的文件 ( 如果存在的话 )。 ( 参阅下面的 自动探测 vars )
  4. 内置的默认值。

请注意,尽管任何环境变量都可以在 vars 文件中被定义和赋值 ( 即使这个环境变量并没有默认地被写在 vars 文件里 ),但并非所有的选项都可以在列表提到的地方进行配置。


3.2 自动探测 vars ( vars Autodetection )

Easy-RSA 所要读取配置的 vars 文件的名称就是 vars ,不带任何的拓展名。写在这个文件中的变量值不会覆盖写在更高优先级的变量值,比如,vars 文件中的变量值不会覆盖配置在环境变量中的值,配置在环境变量中的值不会覆盖在命令行中配置的值。

vars 文件的查找顺序如下,最先找到的会被使用:

  1. 在命令行使用 --vars 指定 vars 文件路径。
  2. 在环境变量中定义 EASYRSA_VARS_FILE 变量,这个变量里存储了 vars 文件的路径。
  3. 在环境变量中定义 EASYRSA_PKI 变量,这个变量里存储了 PKI 文件夹的路径。在 PKI 文件夹中找 vars 文件。
  4. 在默认的 PKI 文件夹路径 $PWD/pki 下找 vars 文件。
  5. 在环境变量中定义 EASYRSA 变量,这个变量里存储了 Easy-RSA 的根路径,easyrsa 脚本文件就位于这个路径下。也就是在和 easyrsa 可执行脚本文件同级的路径中找 vars 文件。
  6. 在包含 Easy-RSA 程序的文件夹中找 vars 文件。

如果环境变量中存在 EASYRSA_NO_VARS 变量,将在所有情况下覆盖 VARS 文件的源,包括随后将其定义为全局选项。 译者注: 作者想说的是,只要设置了 EASYRSA_NO_VARS 环境变量,Easy-RSA 就不会从任何地方找这个 vars 文件,包括命令行中的 --vars 选项也不生效。经实测,如果只执行了 export EASYRSA_NO_VARS 而没有赋值,那么相当于没设这个环境变量。但随便给个什么值 export EASYRSA_NO_VARS=blablabla 都会让这个环境变量生效。


3.3 OpenSSL 配置 ( OpenSSL Config )

Easy-RSA 与 OpenSSL 配置文件 ( .cnf ) 紧密耦合来给脚本提供灵活性。这就要求 OpenSSL 的配置文件能被 Easy-RSA 读取,但也可以为特定的 PKI 使用不同的 OpenSSL 配置文件,甚至可以在调用 Easy-RSA 的时候指定其他的 OpenSSL 配置文件。

Easy-RSA 将用以下方法检索 OpenSSL 配置文件:

  1. 从环境变量 EASYRSA_SSL_CONF 中直接读出 OpenSSL 配置文件的路径。
  2. 从 vars 文件中读取配置。 译者注: vars 文件中的 EASYRSA_SSL_CONF 变量存储了 OpenSSL 配置文件的路径。
  3. 从环境变量 EASYRSA_PKI 存储的 pki 文件夹中寻找文件名为 openssl-easyrsa.cnf 的文件作为 OpenSSL 的配置文件。
  4. 从环境变量 EASYRSA 存储的 Easy-RSA 根路径下寻找名为 openssl-easyrsa.cnf 的文件作为 OpenSSL 的配置文件。

4 高级拓展处理 ( Advanced extension handling )

通常,证书的扩展段的内容取决于签名期间 CLI 中给定的证书类型。 译者注: CLI 给定的证书类型必须是 x509-types 文件夹中存在的类型。 然后 Easy-RSA 会根据指定的类型到 x509-types 目录中找预定义的类型文件,根据文件中的字段配置添加对应的 OpenSSL 扩展。在 PKI 目录 ( EASYRSA_PKI ) 中建立一个 x509-types 文件夹可以覆盖 Easy-RSA 根目录下的 x509-types 文件夹。 译者注: 这样,这个 PKI 以后都从 PKI 目录下的 x509-types 文件夹中读取扩展信息。

x509-types 目录中名为 COMMON 的文件会被添加到每个证书中。这这文件是为使用 CDP 而设计的,但也可以通过这个文件添加任意扩展到每个被签出的证书中。 译者注: CDP ( CRL Distribution Point ), CLR ( Certificate Revocation List )。CDP 是数字证书中的信息,它描述了如何获取证书的 CRL 列表。

此外,环境变量 EASYRSA_EXTRA_EXTS 中的内容会被添加到 OpenSSL 扩展中的原始文本里。环境变量的内容会按原样附加到证书扩展中。无效的 OpenSSL 配置会导致 easyrsa 执行失败。


5 环境变量手册 ( Environmental Variables Reference )

下面显示了环境变量列表;和环境变量有同样效果的,比环境变量优先级更高的命令行选项;以及简短的描述:

注意: 需要在实际命令之前提供全局选项。 译者注: easyrsa 命令的格式是 easyrsa [options] COMMAND [command-options] 。作者是想说,列表中,括号里的命令行选项必须放在 COMMAND 部分之前。即,括号中的命令行选项是 options 段中的内容。